{
  "format_version": "1.26.0",
  "minecraft:client_entity": {
    "description": {
      "identifier": "minecraft:player",
      "materials": {
        "default": "entity_alphatest",
        "cape": "entity_alphatest",
        "animated": "player_animated",
        "spectator": "player_spectator"
      },
      "textures": {
        "default": "textures/entity/steve",
        "executor": "textures/melee/executor",
        "annihil": "textures/melee/annihil",
        "null_annihil": "textures/melee/null_annihil",
        "treasure_kn": "textures/melee/treasure_kn",
        "silencefd": "textures/melee/silencefd",
        "observer": "textures/melee/observer",
        "quenching": "textures/melee/quenching",
        "polaris": "textures/melee/polaris",
        "mercy": "textures/melee/mercy",
        "shadowkiller": "textures/melee/shadowkiller",
        "thieve_sea": "textures/melee/thieve_sea",
        "cape": "textures/entity/cape_invisible"
      },
      "geometry": {
        "default": "geometry.humanoid.custom",
        "executor": "geometry.executor",
        "executorroot": "geometry.executorroot",
        "annihil": "geometry.annihil",
        "null_annihil": "geometry.null_annihil",
        "annihilroot": "geometry.annihilroot",
        "mercy": "geometry.mercy",
        "mercyroot": "geometry.mercyroot",
        "shadowkiller": "geometry.shadowkiller",
        "shadowkillerroot": "geometry.shadowkillerroot",
        "treasure_kn": "geometry.treasure_kn",
        "treasure_knroot": "geometry.treasure_knroot",
        "silencefd": "geometry.silencefd",
        "silencefdroot": "geometry.silencefdroot",
        "observer": "geometry.observer",
        "observerroot": "geometry.observerroot",
        "quenching": "geometry.quenching",
        "quenchingroot": "geometry.quenchingroot",
        "thieve_sea": "geometry.thieve_sea",
        "thieve_searoot": "geometry.thieve_searoot",
        "polaris": "geometry.polaris",
        "polarisroot": "geometry.polarisroot",
        "cape": "geometry.cape"
      },
      "scripts": {
        "scale": "0.9375",
        "variables": {
          "variable.fp_melee_spear_use_attachable_rotation_z": "public",
          "variable.tp_melee_spear_use_attachable_rotation_z": "public",
          "variable.fp_melee_spear_attack_attachable_rotation_z": "public",
          "variable.tp_melee_spear_attack_attachable_position_z": "public",
          "variable.attack_time": "public",
          "variable.item_use_normalized": "public"
        },
        "initialize": [
          "v.is_holding_right = 0.0;",
          "v.is_blinking = 0.0;",
          "v.last_blink_time = 0.0;",
          "v.hand_bob = 0.0;",
          "v.melee_spear_java_to_bedrock_scale = 40.0;",
          "v.prev_attack_time = 0.0;",
          "v.still_time = 0.0;",
          "v.idle_trigger = 0.0;",
          "v.annihil_color_toggle = 0.0;",
          "v.prev_diamond_sword = 0.0;"
        ],
        "pre_animation": [
          "v.helmet_layer_visible = !query.has_head_gear;",
          "v.leg_layer_visible = 1.0;",
          "v.boot_layer_visible = 1.0;",
          "v.chest_layer_visible = 1.0;",
          "variable.is_third_person = !variable.is_first_person && !variable.map_face_icon;",
          "variable.holding_all_melee = query.get_equipped_item_name=='wooden_sword' || query.get_equipped_item_name=='diamond_sword' || query.get_equipped_item_name=='netherite_sword' || query.get_equipped_item_name=='netherite_pickaxe' || query.get_equipped_item_name=='diamond_pickaxe' || query.get_equipped_item_name=='iron_pickaxe' || query.get_equipped_item_name=='golden_sword' || query.get_equipped_item_name=='stone_pickaxe' || query.get_equipped_item_name=='stone_sword' || query.get_equipped_item_name=='iron_sword' || query.get_equipped_item_name=='iron_axe';",
          "variable.thieve_sea = query.get_equipped_item_name=='diamond_pickaxe';",
          "variable.polaris = query.get_equipped_item_name=='iron_pickaxe';",
          "variable.quenching = query.get_equipped_item_name=='stone_pickaxe';",
          "variable.mercy = query.get_equipped_item_name=='golden_sword';",
          "variable.shadowkiller = query.get_equipped_item_name=='stone_sword';",
          "variable.treasure_kn = query.get_equipped_item_name=='netherite_sword';",
          "variable.silencefd = query.get_equipped_item_name=='iron_axe';",
          "variable.observer = query.get_equipped_item_name=='iron_sword';",
          "variable.executor = query.get_equipped_item_name=='wooden_sword';",
          "v.current_diamond_sword = query.get_equipped_item_name=='diamond_sword' ? 1.0 : 0.0;",
          "v.annihil_color_toggle = (v.current_diamond_sword > 0.0 && v.prev_diamond_sword <= 0.0) ? (1.0 - v.annihil_color_toggle) : v.annihil_color_toggle;",
          "v.prev_diamond_sword = v.current_diamond_sword;",
          "variable.annihil = query.get_equipped_item_name=='diamond_sword' || query.get_equipped_item_name=='netherite_pickaxe';",
          "variable.null_annihil = query.get_equipped_item_name=='netherite_pickaxe';",
          "variable.annihil2 = query.get_equipped_item_name=='diamond_sword';",
          "v.still_time = (query.is_on_ground && !query.is_sneaking && !query.is_using_item && query.modified_move_speed < 0.01) ? v.still_time + query.delta_time : 0.0;",
          "v.idle_trigger = (v.still_time >= 2.0 && (v.still_time < 2.0 + query.delta_time || (v.still_time >= 10.0 && math.mod(v.still_time - 10.0, 8.0) < query.delta_time))) ? 1.0 : 0.0;",
          "v.attack_edge = (variable.attack_time > 0.0f && v.prev_attack_time <= 0.0f);",
          "v.prev_attack_time = variable.attack_time;",
          "v.attack_body_rot_y = Math.sin(360 * Math.sqrt(v.attack_time)) * 10.0;",
          "v.tcos0 = math.cos(query.modified_distance_moved * 38.17) * query.modified_move_speed / v.gliding_speed_value * 57.3;",
          "v.first_person_item_rotation_factor = math.sin((1 - v.attack_time) * 180.0);",
          "v.hand_bob = query.life_time < 0.01 ? 0.0 : v.hand_bob + ((query.is_on_ground && query.is_alive ? math.clamp(math.sqrt(math.pow(query.position_delta(0), 2.0) + math.pow(query.position_delta(2), 2.0)), 0.0, 0.1) : 0.0) - v.hand_bob) * 0.02;",
          "v.map_angle = math.clamp(1 - v.player_x_rotation / 45.1, 0.0, 1.0);",
          "v.item_use_duration = query.main_hand_item_use_duration > 0.0 ? (query.main_hand_item_max_duration - (query.main_hand_item_use_duration - query.frame_alpha + 1.0)) : 0.0;",
          "v.item_use_normalized = query.main_hand_item_use_duration / query.main_hand_item_max_duration;",
          "v.riding_y_offset = query.is_riding_any_entity_of_type('minecraft:minecart', 'minecraft:boat', 'minecraft:chest_boat', 'minecraft:strider') ? -3.0 : 0.0;",
          "v.melee_spear_equipped = query.equipped_item_any_tag('slot.weapon.mainhand', 'minecraft:is_spear');",
          "v.tp_melee_spear_base_arm_rotation_x = (query.is_swimming || query.is_gliding) ? (-115.0 - query.target_x_rotation) : (query.is_crawling ? -115.0 : -30.0);",
          "(v.melee_spear_equipped) ? {",
          "  t.melee_spear_use_finish_raise_tick = query.kinetic_weapon_delay;",
          "  t.melee_spear_use_finish_sway_tick = t.melee_spear_use_finish_raise_tick + query.kinetic_weapon_dismount_duration;",
          "  t.melee_spear_use_start_sway_tick = t.melee_spear_use_finish_sway_tick - 20.0;",
          "  t.melee_spear_use_finish_lower_tick = t.melee_spear_use_finish_raise_tick + query.kinetic_weapon_knockback_duration;",
          "  t.melee_spear_use_start_lower_tick = t.melee_spear_use_finish_lower_tick - 40.0;",
          "  t.melee_spear_use_finish_raise_back_tick = t.melee_spear_use_finish_raise_tick + query.kinetic_weapon_damage_duration;",
          "  t.melee_spear_use_start_raise_back_tick = t.melee_spear_use_finish_raise_back_tick - 5.0;",
          "  t.melee_spear_use_raise_progress = math.clamp(math.inverse_lerp(0.0, t.melee_spear_use_finish_raise_tick, v.item_use_duration), 0.0, 1.0);",
          "  t.melee_spear_use_raise_progress_start = math.clamp(math.inverse_lerp(0.0, 0.5, t.melee_spear_use_raise_progress), 0.0, 1.0);",
          "  t.melee_spear_use_raise_progress_middle = math.clamp(math.inverse_lerp(0.5, 0.8, t.melee_spear_use_raise_progress), 0.0, 1.0);",
          "  t.melee_spear_use_raise_progress_end = math.clamp(math.inverse_lerp(0.8, 1.0, t.melee_spear_use_raise_progress), 0.0, 1.0);",
          "  t.melee_spear_use_sway_progress = math.clamp(math.inverse_lerp(t.melee_spear_use_start_sway_tick, t.melee_spear_use_finish_sway_tick, v.item_use_duration), 0.0, 1.0);",
          "  t.melee_spear_use_lower_progress = math.ease_in_out_elastic(0.0, 1.0, math.clamp(math.inverse_lerp(t.melee_spear_use_start_lower_tick, t.melee_spear_use_finish_lower_tick, v.item_use_duration - 20.0), 0.0, 1.0));",
          "  t.melee_spear_use_raise_back_progress = math.clamp(math.inverse_lerp(t.melee_spear_use_start_raise_back_tick, t.melee_spear_use_finish_raise_back_tick, v.item_use_duration), 0.0, 1.0);",
          "  t.melee_spear_use_sway_intensity = math.ease_out_circ(0.0, 2.0, t.melee_spear_use_sway_progress) + math.ease_in_circ(0.0, -2.0, t.melee_spear_use_raise_back_progress);",
          "  t.melee_spear_use_sway_scale_slow = math.sin(v.item_use_duration * 19.0) * t.melee_spear_use_sway_intensity;",
          "  t.melee_spear_use_sway_scale_fast = math.sin(v.item_use_duration * 30.0) * t.melee_spear_use_sway_intensity;",
          "  v.fp_melee_spear_use_item_position_x = (t.melee_spear_use_raise_progress_start * 0.05 + t.melee_spear_use_raise_progress_end * -0.05 + t.melee_spear_use_sway_scale_slow * 0.005) * v.melee_spear_java_to_bedrock_scale;",
          "  v.fp_melee_spear_use_item_position_y = (t.melee_spear_use_raise_progress_start * -0.075 + t.melee_spear_use_raise_progress_middle * 0.075 + t.melee_spear_use_sway_scale_fast * 0.01) * v.melee_spear_java_to_bedrock_scale;",
          "  v.fp_melee_spear_use_item_position_z = (t.melee_spear_use_raise_progress_start * 0.05 + t.melee_spear_use_raise_progress_end * -0.05 + t.melee_spear_use_sway_scale_slow * 0.005) * v.melee_spear_java_to_bedrock_scale;",
          "  v.fp_melee_spear_use_item_rotation_y = t.melee_spear_use_raise_progress * 20.0 + t.melee_spear_use_lower_progress * 20.0 + t.melee_spear_use_sway_scale_slow * 0.5 + t.melee_spear_use_raise_back_progress * -40.0;",
          "  v.fp_melee_spear_use_item_rotation_z = math.ease_in_out_back(0.0, -60.0, t.melee_spear_use_raise_progress) + t.melee_spear_use_lower_progress * -25.0 + t.melee_spear_use_raise_back_progress * 85.0 + t.melee_spear_use_sway_scale_fast * 0.5;",
          "  v.fp_melee_spear_use_attachable_rotation_z = math.clamp(math.inverse_lerp(0.5, 0.55, t.melee_spear_use_raise_progress), 0.0, 1.0) * -50.0 + t.melee_spear_use_sway_progress * 90.0 + t.melee_spear_use_raise_back_progress * -40.0;",
          "  v.tp_melee_spear_use_arm_rotation_x = t.melee_spear_use_raise_progress_start * -40.0 + t.melee_spear_use_raise_progress_middle * 30.0 + t.melee_spear_use_raise_progress_end * -20.0 + t.melee_spear_use_lower_progress * 20.0 + t.melee_spear_use_raise_back_progress * 10.0;",
          "  v.tp_melee_spear_use_arm_rotation_x = v.tp_melee_spear_use_arm_rotation_x + t.melee_spear_use_sway_scale_slow * 0.6;",
          "  v.tp_melee_spear_use_arm_rotation_y = t.melee_spear_use_sway_scale_fast * 1.0;",
          "  v.tp_melee_spear_use_arm_rotation_z = t.melee_spear_use_sway_scale_slow * 0.5;",
          "  v.tp_melee_spear_use_item_rotation_x = t.melee_spear_use_raise_progress * 60.0 + t.melee_spear_use_raise_back_progress * -60.0;",
          "  v.tp_melee_spear_use_attachable_rotation_z = t.melee_spear_use_raise_progress * 90.0 + t.melee_spear_use_sway_progress * -90.0;",
          "  t.melee_spear_attack_duration_ratio = 1.0 / query.base_swing_duration;",
          "  t.melee_spear_attack_raise_end = 0.05 * t.melee_spear_attack_duration_ratio;",
          "  t.melee_spear_attack_thrust_end = 0.2 * t.melee_spear_attack_duration_ratio;",
          "  t.melee_spear_attack_recover_start = 1.0 - (0.6 * t.melee_spear_attack_duration_ratio);",
          "  t.melee_spear_attack_raise_progress = math.clamp(math.inverse_lerp(0.0, t.melee_spear_attack_raise_end, v.attack_time), 0.0, 1.0);",
          "  t.melee_spear_attack_thrust_progress = math.clamp(math.inverse_lerp(t.melee_spear_attack_raise_end, t.melee_spear_attack_thrust_end, v.attack_time), 0.0, 1.0);",
          "  t.melee_spear_attack_recover_progress = math.clamp(math.inverse_lerp(t.melee_spear_attack_recover_start, 1.0, v.attack_time), 0.0, 1.0);",
          "  t.melee_spear_attack_raise_scale = math.ease_in_out_sine(0.0, 1.0, t.melee_spear_attack_raise_progress);",
          "  t.melee_spear_attack_thrust_scale = math.ease_in_quad(0.0, 1.0, t.melee_spear_attack_thrust_progress);",
          "  t.melee_spear_attack_recover_scale = math.ease_in_out_expo(0.0, 1.0, t.melee_spear_attack_recover_progress);",
          "  v.fp_melee_spear_attack_item_position_x = (t.melee_spear_attack_raise_scale * 0.1 + t.melee_spear_attack_thrust_scale * -0.1) * v.melee_spear_java_to_bedrock_scale;",
          "  v.fp_melee_spear_attack_item_position_y = (t.melee_spear_attack_raise_scale * -0.075 + t.melee_spear_attack_recover_scale * 0.075) * v.melee_spear_java_to_bedrock_scale;",
          "  v.fp_melee_spear_attack_item_position_z = (t.melee_spear_attack_raise_scale * 0.65 + t.melee_spear_attack_thrust_scale * -0.65) * v.melee_spear_java_to_bedrock_scale;",
          "  v.fp_melee_spear_attack_item_rotation_y = t.melee_spear_attack_raise_scale * 20.0 + t.melee_spear_attack_recover_scale * -20.0;",
          "  v.fp_melee_spear_attack_item_rotation_z = t.melee_spear_attack_raise_scale * -60.0 + t.melee_spear_attack_recover_scale * 60.0;",
          "  v.fp_melee_spear_attack_attachable_rotation_z = t.melee_spear_attack_raise_scale * 40.0 + t.melee_spear_attack_recover_scale * -40.0;",
          "  v.tp_melee_spear_attack_arm_rotation_x = t.melee_spear_attack_raise_scale * 90.0 + t.melee_spear_attack_thrust_scale * -120.0 + t.melee_spear_attack_recover_scale * 30.0;",
          "  v.tp_melee_spear_attack_item_rotation_x = t.melee_spear_attack_thrust_scale * 60.0 + t.melee_spear_attack_recover_scale * -60.0;",
          "  v.tp_melee_spear_attack_attachable_position_z = (t.melee_spear_attack_thrust_scale * -0.15 + t.melee_spear_attack_recover_scale * 0.15) * v.melee_spear_java_to_bedrock_scale;",
          "};"
        ],
        "animate": [
          "root",
          {
            "executor_fp": "variable.is_first_person"
          },
          {
            "executor_tp": "variable.executor && variable.is_third_person"
          },
          {
            "annihil_fp": "variable.is_first_person"
          },
          {
            "annihil_tp": "variable.annihil && variable.is_third_person"
          },
          {
            "treasure_kn_fp": "variable.is_first_person"
          },
          {
            "treasure_kn_tp": "variable.treasure_kn && variable.is_third_person"
          },
          {
            "silencefd_fp": "variable.is_first_person"
          },
          {
            "silencefd_tp": "variable.silencefd && variable.is_third_person"
          },
          {
            "observer_fp": "variable.is_first_person"
          },
          {
            "observer_tp": "variable.observer && variable.is_third_person"
          },
          {
            "thieve_sea_fp": "variable.is_first_person"
          },
          {
            "thieve_sea_tp": "variable.thieve_sea && variable.is_third_person"
          },
          {
            "annihilsink": "variable.is_first_person"
          },
          {
            "polaris_fp": "variable.is_first_person"
          },
          {
            "polaris_tp": "variable.polaris && variable.is_third_person"
          },
          {
            "mercy_fp": "variable.is_first_person"
          },
          {
            "mercy_tp": "variable.mercy && variable.is_third_person"
          },
          {
            "shadowkiller_fp": "variable.is_first_person"
          },
          {
            "shadowkiller_tp": "variable.shadowkiller && variable.is_third_person"
          },
          {
